/**
 * 方法装饰器
 * @param targetClassPrototype 【RoleService.prototype】类是直接等于类名，但是方法是挂载在原型prototype上的，
 * @param methodName
 * @param methodDecri 【es5\es6中的数据属性，如可读等，可点进去看】
 */

function MyMethodDecorator2(methodPath: string) {
  return function (
    targetClassPrototype: any,
    methodName: string,
    methodDecri: PropertyDescriptor
  ) {
    console.log('带参的方法修饰器：methodPath', methodPath);
    console.log('类属性 targetClassPrototype', targetClassPrototype);
    console.log('methodName', methodName);
    console.log('数据属性', methodDecri);
    // methodDecri.value(); ---- DistribRoles()函数本身
    methodDecri.value();
  };
}
// 目标类
class RoleService2 {
  public roleName: string = '管理员';
  constructor() {}
  @MyMethodDecorator2('/searchFood')
  DistribRoles() {
    console.log('分配角色');
  }
}
